package la.iok.hzsvn.lewin.movie.shopmovie.model;

import java.util.Arrays;
import java.util.Date;
import java.util.Objects;

public class CarpoolVo {
    private Long id;
    /**
     * 拼车店铺
     */
    private Long orgUnitId;
    private String orgUnitName;
    /**
     * 车次标题
     */
    private String title;
    /**
     * 店铺剧本id
     */
    private Long shopMovieId;
    /**
     * 剧本id
     */
    private Long movieId;
    /**
     * 名称
     */
    private String movieName;
    /**
     * 剧本版本
     */
    private String movieVersion;
    /**
     * 标签数组.预计的剧本标签，选择了剧本的情况下,以剧本的标签为准
     */
    private String[] tag;
    /**
     * 玩家数量,预计的玩家数量。选择了剧本的情况下,以剧本的玩家数量[最大玩家数量]为准
     */
    private Integer playerCount;
    /**
     * 最少玩家数量,预计开车最少的玩家数量。选择了剧本的情况下,以剧本的玩家数量[最小玩家数量]为准
     */
    private Integer minPlayerCount;
    /**
     * 已加入玩家数量
     */
    private Integer joinedPlayerCount;
    /**
     * 发车时间
     */
    private Date startTime;
    /**
     * 状态。1：拼车中；2：游戏中；3：已结束。
     * 拼车中的状态，可以扫描拼车二维码加入拼车；
     * 游戏中表示当前已经发车，玩家正在进行游戏，此时不能加入拼车；
     * 已结束表示游戏结束
     */
    private Integer status;
    /**
     * 数据版本,并发控制
     */
    private Long version;
    /**
     * 发车时间
     */
    private Date beginTime;
    /**
     * 发车的用户id(DM的id)
     */
    private Long beginnerId;
    /**
     * 发车的DM昵称
     */
    private String beginnerNickname;
    /**
     * 发车的DM手机号（加密）
     */
    private String beginnerPhoneNumber;
    /**
     * 结束时间
     */
    private Date terminateTime;
    /**
     * 结束者的用户id.如果是系统自动结束,则值为-1
     */
    private Long terminatorId;
    /**
     * 结束者的昵称
     */
    private String terminatorNickname;
    /**
     * 结束者的手机号
     */
    private String terminatorPhoneNumber;

    /**
     * 确认时间
     */
    private Date confirmTime;
    /**
     * 结束者的用户id.如果是系统自动结束,则值为-1
     */
    private Long confirmorId;
    /**
     * 结束者的昵称
     */
    private String confirmorNickname;
    /**
     * 结束者的手机号
     */
    private String confirmorPhoneNumber;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getOrgUnitId() {
        return orgUnitId;
    }

    public void setOrgUnitId(Long orgUnitId) {
        this.orgUnitId = orgUnitId;
    }

    public String getOrgUnitName() {
        return orgUnitName;
    }

    public void setOrgUnitName(String orgUnitName) {
        this.orgUnitName = orgUnitName;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Long getShopMovieId() {
        return shopMovieId;
    }

    public void setShopMovieId(Long shopMovieId) {
        this.shopMovieId = shopMovieId;
    }

    public Long getMovieId() {
        return movieId;
    }

    public void setMovieId(Long movieId) {
        this.movieId = movieId;
    }

    public String getMovieName() {
        return movieName;
    }

    public void setMovieName(String movieName) {
        this.movieName = movieName;
    }

    public String getMovieVersion() {
        return movieVersion;
    }

    public void setMovieVersion(String movieVersion) {
        this.movieVersion = movieVersion;
    }

    public String[] getTag() {
        return tag;
    }

    public void setTag(String[] tag) {
        this.tag = tag;
    }

    public Integer getPlayerCount() {
        return playerCount;
    }

    public void setPlayerCount(Integer playerCount) {
        this.playerCount = playerCount;
    }

    public Integer getMinPlayerCount() {
        return minPlayerCount;
    }

    public void setMinPlayerCount(Integer minPlayerCount) {
        this.minPlayerCount = minPlayerCount;
    }

    public Integer getJoinedPlayerCount() {
        return joinedPlayerCount;
    }

    public void setJoinedPlayerCount(Integer joinedPlayerCount) {
        this.joinedPlayerCount = joinedPlayerCount;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Long getVersion() {
        return version;
    }

    public void setVersion(Long version) {
        this.version = version;
    }

    public Date getBeginTime() {
        return beginTime;
    }

    public void setBeginTime(Date beginTime) {
        this.beginTime = beginTime;
    }

    public Long getBeginnerId() {
        return beginnerId;
    }

    public void setBeginnerId(Long beginnerId) {
        this.beginnerId = beginnerId;
    }

    public String getBeginnerNickname() {
        return beginnerNickname;
    }

    public void setBeginnerNickname(String beginnerNickname) {
        this.beginnerNickname = beginnerNickname;
    }

    public String getBeginnerPhoneNumber() {
        return beginnerPhoneNumber;
    }

    public void setBeginnerPhoneNumber(String beginnerPhoneNumber) {
        this.beginnerPhoneNumber = beginnerPhoneNumber;
    }

    public Date getTerminateTime() {
        return terminateTime;
    }

    public void setTerminateTime(Date terminateTime) {
        this.terminateTime = terminateTime;
    }

    public Long getTerminatorId() {
        return terminatorId;
    }

    public void setTerminatorId(Long terminatorId) {
        this.terminatorId = terminatorId;
    }

    public String getTerminatorNickname() {
        return terminatorNickname;
    }

    public void setTerminatorNickname(String terminatorNickname) {
        this.terminatorNickname = terminatorNickname;
    }

    public String getTerminatorPhoneNumber() {
        return terminatorPhoneNumber;
    }

    public void setTerminatorPhoneNumber(String terminatorPhoneNumber) {
        this.terminatorPhoneNumber = terminatorPhoneNumber;
    }

    public Date getConfirmTime() {
        return confirmTime;
    }

    public void setConfirmTime(Date confirmTime) {
        this.confirmTime = confirmTime;
    }

    public Long getConfirmorId() {
        return confirmorId;
    }

    public void setConfirmorId(Long confirmorId) {
        this.confirmorId = confirmorId;
    }

    public String getConfirmorNickname() {
        return confirmorNickname;
    }

    public void setConfirmorNickname(String confirmorNickname) {
        this.confirmorNickname = confirmorNickname;
    }

    public String getConfirmorPhoneNumber() {
        return confirmorPhoneNumber;
    }

    public void setConfirmorPhoneNumber(String confirmorPhoneNumber) {
        this.confirmorPhoneNumber = confirmorPhoneNumber;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof CarpoolVo)) return false;
        CarpoolVo carpoolVo = (CarpoolVo) o;
        return Objects.equals(id, carpoolVo.id) && Objects.equals(orgUnitId, carpoolVo.orgUnitId)
                && Objects.equals(orgUnitName, carpoolVo.orgUnitName)
                && Objects.equals(title, carpoolVo.title) && Objects.equals(shopMovieId, carpoolVo.shopMovieId)
                && Objects.equals(movieId, carpoolVo.movieId) && Objects.equals(movieName, carpoolVo.movieName)
                && Objects.equals(movieVersion, carpoolVo.movieVersion) && Arrays.equals(tag, carpoolVo.tag)
                && Objects.equals(playerCount, carpoolVo.playerCount) && Objects.equals(startTime, carpoolVo.startTime)
                && Objects.equals(joinedPlayerCount, carpoolVo.joinedPlayerCount)
                && Objects.equals(status, carpoolVo.status) && Objects.equals(version, carpoolVo.version)
                && Objects.equals(beginTime, carpoolVo.beginTime) && Objects.equals(beginnerId, carpoolVo.beginnerId)
                && Objects.equals(beginnerNickname, carpoolVo.beginnerNickname)
                && Objects.equals(beginnerPhoneNumber, carpoolVo.beginnerPhoneNumber)
                && Objects.equals(terminateTime, carpoolVo.terminateTime)
                && Objects.equals(terminatorId, carpoolVo.terminatorId)
                && Objects.equals(terminatorNickname, carpoolVo.terminatorNickname)
                && Objects.equals(terminatorPhoneNumber, carpoolVo.terminatorPhoneNumber)
                && Objects.equals(confirmTime, carpoolVo.confirmTime)
                && Objects.equals(confirmorId, carpoolVo.confirmorId)
                && Objects.equals(confirmorNickname, carpoolVo.confirmorNickname)
                && Objects.equals(confirmorPhoneNumber, carpoolVo.confirmorPhoneNumber);
    }

    @Override
    public int hashCode() {
        int result = Objects.hash(id, orgUnitId, orgUnitName, title, shopMovieId, movieId, movieName, movieVersion,
                playerCount, joinedPlayerCount, startTime, status, version, beginTime, beginnerId, beginnerNickname, beginnerPhoneNumber,
                terminateTime, terminatorId, terminatorNickname, terminatorPhoneNumber, confirmTime, confirmorId,
                confirmorNickname, confirmorPhoneNumber);
        result = 31 * result + Arrays.hashCode(tag);
        return result;
    }

    @Override
    public String toString() {
        return "CarpoolVo{" +
                "id=" + id +
                ", orgUnitId=" + orgUnitId +
                ", orgUnitName='" + orgUnitName + '\'' +
                ", title='" + title + '\'' +
                ", shopMovieId=" + shopMovieId +
                ", movieId=" + movieId +
                ", movieName='" + movieName + '\'' +
                ", movieVersion='" + movieVersion + '\'' +
                ", tag=" + Arrays.toString(tag) +
                ", playerCount=" + playerCount +
                ", joinedPlayerCount=" + joinedPlayerCount +
                ", startTime=" + startTime +
                ", status=" + status +
                ", version=" + version +
                ", beginTime=" + beginTime +
                ", beginnerId=" + beginnerId +
                ", beginnerNickname='" + beginnerNickname + '\'' +
                ", beginnerPhoneNumber='" + beginnerPhoneNumber + '\'' +
                ", terminateTime=" + terminateTime +
                ", terminatorId=" + terminatorId +
                ", terminatorNickname='" + terminatorNickname + '\'' +
                ", terminatorPhoneNumber='" + terminatorPhoneNumber + '\'' +
                ", confirmTime=" + confirmTime +
                ", confirmorId=" + confirmorId +
                ", confirmorNickname='" + confirmorNickname + '\'' +
                ", confirmorPhoneNumber='" + confirmorPhoneNumber + '\'' +
                '}';
    }
}
